package ar.com.jsejtman.cajugastos2.core.validator.service;

import ar.com.jsejtman.cajugastos2.core.validator.entity.IValidationResultsContainer;
import org.springframework.validation.BindingResult;
import org.springframework.validation.Validator;

/**
 * Interfaz de servicios de validación de objetos.
 * 
 * @author Sebastián Matienzo
 */
public interface IValidatorService {

	/**
	 * Valida un objeto usando un validador de Spring, y volcando los resultados en un contenedor de
	 * errores personalizado.
	 * 
	 * @param validator Validator de Spring a utilizar.
	 * @param objectToValidate Objeto a validar.
	 * @param customContainer Contenedor de errores personalizado para resultados de validación.
	 */
	void validate(final Validator validator, final Object objectToValidate,
	        final IValidationResultsContainer customContainer);

	/**
	 * Valida un objeto usando un contenedor de errores de Spring.
	 * 
	 * @param validator Validator de Spring a utilizar.
	 * @param objectToValidate Objeto a validar.
	 * @param springErrorsContainer Contenedor de errores de Spring para resultados de validación.
	 */
	void validate(final Validator validator, final Object objectToValidate,
	        final BindingResult springErrorsContainer);
}
